\newcommand{\Beta}{\textsc{Beta}\xspace}
\newcommand{\gBeta}{\textsf{gBeta}\xspace}
\newcommand{\dotfj}{.FJ\xspace}

% \newcommand{\block}[1]{\ensuremath{\texttt{\symbol{123}}\ {#1}\ \texttt{\symbol{125}}}}
\newcommand{\startblock}{\ensuremath{\textup{\texttt{\symbol{123}}\ }}}
\newcommand{\finishblock}{\ensuremath{\ \textup{\texttt{\symbol{125}}}}}

\newcommand{\dom}{\ensuremath{\mathrm{dom}}}

%\newcommand{\sub}{\ensuremath{\leq}\xspace}

\newcommand{\ptr}{\ensuremath{\iota}\xspace}
\newcommand{\cptr}{\ensuremath{{\kappa}}\xspace}

\newcommand{\vdashE}{\vdash_{\sf e}\xspace}
\newcommand{\vdashT}{\vdash_{\sf t}\xspace}
\newcommand{\vdashP}{\vdash_{\sf p}\xspace}
\newcommand{\vdashPP}{\vdash_{\sf pp}\xspace}
\newcommand{\vdashC}{\ensuremath{\vdash_{\sf c}}\xspace}

%\newcommand{\path}{\textit{path}\xspace}
\newcommand{\classes}[1]{\textsf{classes}({#1})\xspace}
\newcommand{\finalfields}[1]{\textsf{finals}({#1})\xspace}
\newcommand{\nonfinalfields}[1]{\textsf{nonfinals}({#1})\xspace}
\newcommand{\red}{\ensuremath{\leadsto}\xspace}
\newcommand{\opt}[1]{\ensuremath{[{#1}]}\xspace}
\newcommand{\tm}[1]{\ensuremath{{#1}^{\rm tm}}\xspace}


\newcommand{\typeof}[1]{{#1}{\mbox{\texttrademark}}}

\newcommand{\prg}[1]{{\tt #1}} % {\ensuremath{\sf #1}}
\newcommand{\prgC}[1]{\ensuremath{\bullet.\prg{#1}}}
\newcommand{\prgT}[1]{\prgC{#1}}


\newcommand{\Cid}{\ensuremath{\mathsf{C}\xspace}}  % {\ensuremath{\mathit{Cid}}\xspace}
\newcommand{\world}{{\tt world}\xspace}
\newcommand{\lobby}{{\sf lobby}\xspace}
\newcommand{\owner}{{\tt owner}\xspace}
\newcommand{\out}{{\tt out}\xspace}

\newcommand{\defs}{\textsf{defs}\xspace}
\newcommand{\Fields}[1]{\textsf{fields}({#1})\xspace}
   %{\textsf{fields}_\CT({#1})\xspace}
\newcommand{\Methods}[1]{\textsf{methods}({#1})\xspace}
   %{\textsf{methods}_\CT({#1})\xspace}
\newcommand{\Sups}[1]{\textsf{sups}({#1})\xspace}
\newcommand{\Con}[1]{\textsf{constructors}({#1})\xspace}
   % {\textsf{sups}_\CT({#1})\xspace}
\newcommand{\Classes}[1]{\textsf{classes}({#1})\xspace}
   % {\textsf{classes}_\CT({#1})\xspace}
\newcommand{\FieldsI}[1]{\textsf{fields}_\IT({#1})\xspace}
\newcommand{\MethodsI}[1]{\textsf{methods}_\IT({#1})\xspace}
\newcommand{\SupsI}[1]{\textsf{sups}_\IT({#1})\xspace}
\newcommand{\ClassesI}[1]{\textsf{classes}_\IT({#1})\xspace}

%\newcommand{\class}{\textit{class}\xspace}
\newcommand{\field}{\textit{fld}\xspace}
\newcommand{\kon}{\constructor} % {\textit{kon}\xspace}
\newcommand{\method}{\textit{mthd}\xspace}
%\newcommand{\constructor}{\textit{cnstr}\xspace}
%\newcommand{\this}{\texttt{this}\xspace}
%\newcommand{\final}{\texttt{final}\xspace}

\newcommand{\object}{\textit{object}\xspace}

\newcommand{\fn}{\textit{fn}\xspace}
\newcommand{\md}{\textit{md}\xspace}

\newcommand{\block}[1]{\ensuremath{\texttt{\symbol{123}}\ {#1}\ \texttt{\symbol{125}}}}
%\newcommand{\set}[1]{\ensuremath{\{{#1}\}}\xspace}

\newcommand{\typerule}[2]{
 \begin{array}{c}
   #1 \\
   \hline
   \raisebox{-1pt}{\ensuremath{#2}}
 \end{array}}

\newcommand{\ntyperule}[3]{
 \begin{array}{c}
   \textsc{\scriptsize ({#1})} \\
   #2 \\
   \hline
   \raisebox{-1pt}{\ensuremath{#3}}
 \end{array}}

\newcommand{\expr}{\textit{expr}\xspace}
\newcommand{\nul}{\texttt{null}\xspace}
%\newcommand{\return}{\texttt{return}~}
%\newcommand{\new}{\texttt{new}~}
\newcommand{\many}[1]{\ensuremath{\overline{#1}}\xspace}
\newcommand{\Let}[3]{\texttt{final}~{#1}:={#2};~{#3}\xspace}


\newcommand{\expandsto}{\ensuremath{\Yleft}\xspace}
\newcommand{\CID}{\textit{ClassId}\xspace}
\newcommand{\CIDS}{\CID\textit{s}\xspace}
\newcommand{\CN}{\textit{ClassName}\xspace}
\newcommand{\CT}{\mathsf{CT}\xspace}
\newcommand{\IT}{\mathsf{IT}\xspace}
\newcommand{\Is}{\mathsf{Is}\xspace}
\newcommand{\BT}{\mathsf{BT}\xspace} % basic table
\newcommand{\Object}[3]{[\,{#2}\,]_{#3}\xspace}
%\newcommand{\extends}{\texttt{extends}\xspace}
\newcommand{\binds}{\texttt{binds}\xspace}
\newcommand{\adopts}{\texttt{adopts}\xspace}
\newcommand{\BOX}[2][]{{\ensuremath{[\![{#2}]\!]}_{#1}}\xspace}
\newcommand{\subclasses}[1]{\textsf{subclasses}({#1})\xspace}

\newcommand{\DOT}{\ensuremath{_{\circ}}\xspace}

\newcommand{\judge}[3]{{#1}\vdash{#3}}

\newcommand{\RED}[1]{\textcolor{red}{#1}}
\newcommand{\REDS}[1]{\textcolor{red}{#1}}
\newcommand{\TWR}[1]{\textcolor{magenta}{#1}}
\newcommand{\JO}[1]{\textcolor{green}{#1}}
\newcommand{\DC}[1]{\textcolor{red}{#1}}
\newcommand{\BEA}[1]{\textcolor{blue}{#1}}

\newcommand{\TW}[1]{\textcolor{magenta}{\footnote{{\sc{Tobias says:\ }} #1}}}

\newcommand{\DCR}[1]{\textcolor{red}{#1}}

%% \definecolor{Gray}{gray}{0.8}
\newcommand{\Gray}[1]{\colorbox{Gray}{#1}}

\newcommand{\Blue}[1]{\colorbox{cyan}{#1}}

%non zero value
\newcommand{\nzv}{\ensuremath{\mathbf{v}}}
\newcommand{\nvz}{\nzv}

\newcommand{\rulename}[1]{\textsc{\small ({#1})}}

\newcommand{\forget}[1]{} % for leaving out stuff
\newcommand{\SPACE}{\mbox{$ \ \ \ \  \ \  \ \ \ $}}
\newcommand{\EMPTY}{\ensuremath{\bot}\xspace}

\newcommand{\A}{{\sf A}}
\newcommand{\AP}{{\sf A'}}
\newcommand{\APP}{{\sf A''}}
%\newcommand{\B}{{\sf B}}
%\newcommand{\D}{{\sf D}}
%\newcommand{\C}{{\sf C}}
\newcommand{\Obj}{{\sf Object}\xspace}

\newcommand{\isClass}[2]{\ensuremath{  \vdash  #2 ~ \it{cls}}}
  % {\ensuremath{  \vdash  #2 ~ \textsf{class}}}
%\newcommand{\subclass}[3]{\ensuremath{  \vdash #2\subclassSymb #3}}
\newcommand{\notSubclass}[3]{\ensuremath{  \not\vdash #2\subclassSymb #3}}
\newcommand{\subclassTr}[3]{\ensuremath{  \vdash #2\subclassSymb^* #3}}
\newcommand{\subclassSymb}{\ensuremath{\sqsubseteq_{s}}}
\newcommand{\subclassFurther}[3]
           {\ensuremath{  \vdash #2\subclassFurtherSymb #3}}
\newcommand{\subclassFurtherTr}[3]
           {\ensuremath{  \vdash #2\subclassFurtherSymb^* #3}}
\newcommand{\subclassFurtherSymb}{\ensuremath{\sqsubseteq_{i}}}
\newcommand{\further}[3]{\ensuremath{ \vdash #2\furtherSymb #3}}
\newcommand{\furtherTr}[3]{\ensuremath{ \vdash #2\furtherSymb^* #3}}
\newcommand{\furtherSymb}{\ensuremath{\sqsubseteq_{f}}}
\newcommand{\minusConstr}[1]{{\ensuremath{#1}^{-\tt cn}}}

\newcommand{\ie}{{\it i.e.,}\xspace}
\newcommand{\eg}{{\it e.g.,}\xspace}
\newcommand{\cf}{{\it cf.}\xspace}

%\newcommand{\Vohz}{Poss\'{e}\xspace}
\newcommand{\Vohz}{Tribe\xspace}
\newcommand{\Tribe}{\Vohz}
\newcommand{\vC}{{\emph{vc}}\xspace}
\newcommand{\vc}{\vC}
\newcommand{\Vc}{\vC}

\newcommand{\vObj}{\textit{vObj}\xspace}
\newcommand{\jx}{Jx\xspace}

\newcommand{\Stuck}{\textsc{Stuck}}
\newcommand{\config}[1]{#1} % {\langle #1 \rangle}

\newcommand{\SPACES}[1]{\\{$ ~ \ \hspace{.2in} $}(#1) \hspace{.1in}}
\newcommand{\RefSp}[1]{{(#1)}}
\newcommand{\refSp}[1]{{(#1)}}
\newcommand{\extract}[1]{{\ensuremath{#1^\gamma}}}
\newcommand{\extractGammaIota}[1]{{\ensuremath{#1^{\gamma,\iota}}}}

\newcommand{\ff}{\ensuremath{\mathit{ff}}}
\newcommand{\error}{\ensuremath{\mathtt{error}}}

%\renewcommand{\bullet}  {\circ}

%% \DefineVerbatimEnvironment{SmallCode}{Verbatim}{fontsize=\small}

\newcommand{\FSalg}{$F\!S_{alg}$\xspace}

%% -----------------------------------------------------------------------------
%% for the Effects paper

\newcommand{\PRG}{\ensuremath{P}\xspace}
\newcommand{\CLS}{\ensuremath{C}\xspace}
\newcommand{\FD}{\textit{fd}\xspace}
\newcommand{\MD}{\textit{md}\xspace}
\newcommand{\EXPR}{\ensuremath{e}\xspace} % will I even use this? 
\newcommand{\STAT}{\ensuremath{s}}
\newcommand{\LVAL}{\textit{lval}} 
\newcommand{\Rel}{\ensuremath{\mathop{\textsf{R}}}\xspace}
\newcommand{\IS}{\>::=\>}
%\newcommand{\OR}{~\ensuremath{|}~\xspace}
\newcommand{\mpar}[1]{\langle{#1}\rangle}
\newcommand{\classdef}[3]{\texttt{class}\ensuremath{\ {#1}\mpar{#2}\,\startblock{#3}\finishblock}}
\newcommand{\methoddef}[5]{\ensuremath{\mpar{#1}\ #2\ m(#3)\,{#4}\,\startblock{#5}\finishblock}}
\newcommand{\letexpr}[3]{\ensuremath{\texttt{let}\ \ensuremath{#1}:={#2}\ \texttt{in}\ {#3}}}
\newcommand{\betexpr}[3]{\ensuremath{\texttt{borrow}\ \ensuremath{#2} \texttt{~as~} {#1}\ \texttt{in}\ \block{#3}}}
\newcommand{\insidenaked}{\ensuremath{\prec}\xspace}
\newcommand{\inside}{\ensuremath{\prec^*}\xspace}
\newcommand{\outside}{\ensuremath{\succ^*}\xspace}
\newcommand{\insidep}{\ensuremath{\prec^+}\xspace}
\newcommand{\outsidep}{\ensuremath{\succ^+}\xspace}
\newcommand{\DR}{\texttt{-{}-}\xspace}
\newcommand{\LV}{~\textbf{LV}\xspace}
\newcommand{\unique}{\texttt{unique}\xspace}
\newcommand{\Expand}[2]{\ensuremath{\textsf{expand}({#1},{#2})}}
\newcommand{\IsUnique}[1]{\ensuremath{\textsf{isunique}({#1})}}

\newcommand{\New}[1]{\texttt{new}~\ensuremath{#1}}

\newcommand{\Jdg}[3][]{{#2}\vdash_{\sf#1}{#3}}
\newcommand{\JdgE}[3]{{#1},{#3}\vdash{#2}}
\newcommand{\type}[3]{#1\,#2\mpar{#3}}
\newcommand{\utype}[3]{\unique_{#1}\,#2\mpar{#3}}
\newcommand{\rtype}[3]{{\tt read}_{#1}\,#2\mpar{#3}}
\newcommand{\itype}[3]{{\tt immutable}_{#1}\,#2\mpar{#3}}
\newcommand{\owners}{\textsf{owners}\xspace}
\newcommand{\Owner}{{\sf owner}\xspace}
%\renewcommand{\implies}{\ensuremath{\Rightarrow}\xspace}
\newcommand{\LessEffects}[2]{\ensuremath{#1\subseteq#2}}
\newcommand{\Strip}[1]{\textsf{nm}\ensuremath{(#1)}}
\newcommand{\Mode}[1]{\textsf{md}\ensuremath{(#1)}}
\newcommand{\Effects}[1]{\ensuremath{\textsf{effects}(#1)}}
%\newcommand{\code}[1]{\texttt{\small#1}}

\newcommand{\Read}[1]{\ensuremath{#1}\texttt{-}}
\newcommand{\Write}[1]{\ensuremath{#1}\texttt{+}}
%\newcommand{\Immutable}[1]{\ensuremath{#1}\texttt{*}}
\newcommand{\READ}{\texttt{read}\xspace}
\newcommand{\WRITE}{\texttt{write}\xspace}
\newcommand{\IMMUTABLE}{\texttt{immutable}\xspace}
\newcommand{\UNIQUE}{\texttt{unique}\xspace}

\newcommand{\mpr}[1]{{#1}^\circ} 
\newcommand{\perm}{~\mathit{perm}}
